package main
import (
	"fmt"
	"time"
)
//选择排序算法 *****
//属于内部排序，是从欲排序的数据中，按指定的规则选出某一种元素，经过和其他元素重整，在依原则交换位置后达到排序的目的
//具体操作就是：从0~n-1中选最小的值放到0的位置(与之交换)，再从1~n-1中选最小的数放到1的位置(与之交换)，再从...如此重复
func main(){
	var array [10]int = [...]int{11,2,42,21,4,64,14,50,91,16}
	fmt.Println(array)
	start := time.Now().UnixNano()
	SelectSort(&array)
	end := time.Now().UnixNano()
	fmt.Println(array)
	fmt.Println("所用时间：",end - start)
}

func SelectSort(a *[10]int){
	//从大到小排
	var max,index int
	for i := 0;i<len(a)-1;i++{
		max = a[i]   //选择当前元素作为最大值，然后与后面所有元素比较，如果还大，就换成最大的值
		index = i
		for j := i+1;j < len(a);j++{
			if a[j] > max{
				max = a[j]
				index = j
			}
		}
		if index != i{	//将找到的最大的值的序号用来将 第i个与最大值进行交换，然后i++，开始第二轮找第二个最大值
			a[i],a[index] = a[index],a[i]
		}
		
	}
}